export interface PointI {
	/** X位置 */
	x: number;

	/** Y位置 */
	y: number;
}

/** 二维点计算类 */
export default class Point {

	/** 一度的值 */
	public static OneAngle: number = Math.PI / 180;

	/**
	 * 获取角度
	 * @param current 对比点
	 * @param target 参照点
	 * @returns 两点之间的角度
	 */
	public static GetAngle(current: PointI, target: PointI): number {
		const { x: X2, y: Y2 } = current;
		const { x: X1, y: Y1 } = target;
		let ret = 0;
		const def_x = X2 - X1;
		const def_y = Y2 - Y1;
		const value = Math.atan(def_x / def_y);
		if (isNaN(value)) {
			return ret;
		}
		ret = value / Point.OneAngle;
		if (def_y >= 0) {
			ret = 90 - ret;
		}
		if (def_y < 0) {
			ret = 270 - ret;
		}
		return ret;
	}
}